package com.sky.config;

import com.sky.properties.AliOssProperties;
import com.sky.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/*
 AliOssProperties对象的属性值已经在配置文件中定义，并且在应用启动时被Spring加载和注入。
 这种情况下，你可以在配置文件中配置AliOssProperties的属性，
 Spring会自动将这些属性值注入到AliOssProperties对象中，然后传递给aliOssUtil方法。
 */

/**
 * 配置类，用于创建oss对象
 */
@Configuration//告诉Spring这是一个配置类，Spring应该在启动时加载它。与Bean注解一起使用
@Slf4j
public class OssConfiguration {
    @Bean
    @ConditionalOnMissingBean//如果Bean容器内没有该对象，就会将该返回的对象添加到容器中，否则不加入
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
        log.info("开始创建阿里云工具对象: {}",aliOssProperties);
        return new AliOssUtil(aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());
    }
}
